package com.mini.handler;

import com.mini.MiniResultSetHandler;
import com.mini.MiniRowProcessor;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;

public class MiniMapHandler implements MiniResultSetHandler<Map<String, Object>> {
    // 将结果接转换为其他数据类型的实例对象
    private final MiniRowProcessor convert;

    // 构造函数初始化
    public MiniMapHandler() {
        convert = ROW_PROCESSOR;
    }
    public MiniMapHandler(MiniRowProcessor miniRowProcessor) {
        super();
        convert = miniRowProcessor;
    }

    @Override
    public Map<String, Object> handle(ResultSet resultSet) throws SQLException {
        /* 将结果集中第一条记录的所有数据都封装到Map集合中并返回
         * next()会将结果集对象维护的游标向下移动一位，游标的初始位置是第一条数据的前面；第一次调用时，游标会定位到第一行数据 */
        return resultSet.next() ? this.convert.toMap(resultSet) : null;
    }
}
